<html><head>
<meta http-equiv="content-type" content="text/html">

<!-- GENERATED WITH OPTION "USE_OLD_HTML_INSTEAD_OF_VALID_XHTML_1.1" -->
<title>Source code</title>
<meta name="generator" content="C++2HTML by Jasper Bedaux">
<!-- To generate your own colored code visit http://www.bedaux.net/cpp2html/ -->
</head><body bgcolor="#ffffff">
<pre><font color="#ff6633">void</font> ImageCanvas<b><font color="#663300">::</font></b>OnPaint<b><font color="#663300">(</font></b>wxPaintEvent<b><font color="#663300"> &amp;</font></b>WXUNUSED<b><font color="#663300">(</font></b>event<b><font color="#663300">))
{</font></b>
	wxPaintDC dc<b><font color="#663300">(</font></b><font color="#990000">this</font><b><font color="#663300">);</font></b><font color="#ff0000">

	if</font><b><font color="#663300">(</font></b>m_pImage<b><font color="#663300">){</font></b>

		wxRect rect<b><font color="#663300"> =</font></b> GetClientRect<b><font color="#663300">();</font></b><font color="#ff0000">

		if</font><b><font color="#663300">(</font></b>rect<b><font color="#663300">.</font></b>width<b><font color="#663300"> ==</font></b><font color="#999900"> 0</font><b><font color="#663300"> ||</font></b> rect<b><font color="#663300">.</font></b>height<b><font color="#663300"> ==</font></b><font color="#999900"> 0</font><b><font color="#663300">)
		{</font></b><font color="#ff0000">
			return</font><b><font color="#663300">;
		}</font></b><i><font color="#999999">

		// Get the handle of the wxWindow
</font></i>		HWND hwnd<b><font color="#663300"> = (</font></b>HWND<b><font color="#663300">)</font></b><font color="#990000">this</font><b><font color="#663300">-&gt;</font></b>GetHandle<b><font color="#663300">();</font></b><i><font color="#999999">

		// Now get the native windows DC for this window
</font></i>		HDC hdc<b><font color="#663300"> = ::</font></b>GetDC<b><font color="#663300">(</font></b>hwnd<b><font color="#663300">);</font></b><font color="#ff6633">

		int</font> w<b><font color="#663300">  =</font></b> m_pImage<b><font color="#663300">-&gt;</font></b>GetWidth<b><font color="#663300">();</font></b><font color="#ff6633">
		int</font> h<b><font color="#663300"> =</font></b> m_pImage<b><font color="#663300">-&gt;</font></b>GetHeight<b><font color="#663300">();</font></b>


		HDC dcbuffer<b><font color="#663300"> =</font></b> CreateCompatibleDC<b><font color="#663300">(</font></b>hdc<b><font color="#663300">);</font></b>
		HBITMAP hbuffer<b><font color="#663300"> =</font></b> CreateCompatibleBitmap<b><font color="#663300">(</font></b>hdc<b><font color="#663300">,</font></b> w<b><font color="#663300">,</font></b> h<b><font color="#663300">);</font></b>
		SelectObject<b><font color="#663300">(</font></b>dcbuffer<b><font color="#663300">,</font></b> hbuffer<b><font color="#663300">);</font></b> 

		GraphicImageModel<b><font color="#663300"> *</font></b> model<b><font color="#663300"> =</font></b><font color="#990000"> new</font> GraphicImageModel<b><font color="#663300">();</font></b>
		model<b><font color="#663300">-&gt;</font></b>SetImage<b><font color="#663300">(</font></b>m_pImage<b><font color="#663300">);</font></b>
		GraphicImagePresenter<b><font color="#663300">*</font></b> p<b><font color="#663300"> =</font></b><font color="#990000"> new</font> GraphicImagePresenter<b><font color="#663300">(</font></b>dcbuffer<b><font color="#663300">,</font></b>hbuffer<b><font color="#663300">);</font></b>
		p<b><font color="#663300">-&gt;</font></b>SetModel<b><font color="#663300">(</font></b>model<b><font color="#663300">);</font></b>
		p<b><font color="#663300">-&gt;</font></b>OnPaint<b><font color="#663300">();</font></b><i><font color="#999999">

		// Now blit the object to the screen
</font></i>		BitBlt<b><font color="#663300">(</font></b>hdc<b><font color="#663300">,</font></b><font color="#999900"> 0</font><b><font color="#663300">,</font></b><font color="#999900"> 0</font><b><font color="#663300">,</font></b> rect<b><font color="#663300">.</font></b>width<b><font color="#663300">,</font></b> rect<b><font color="#663300">.</font></b>height<b><font color="#663300">,</font></b> dcbuffer<b><font color="#663300">,</font></b><font color="#999900"> 0</font><b><font color="#663300">,</font></b><font color="#999900"> 0</font><b><font color="#663300">,</font></b> SRCCOPY<b><font color="#663300">);</font></b>



		DeleteDC<b><font color="#663300">(</font></b>dcbuffer<b><font color="#663300">);</font></b>
		DeleteObject<b><font color="#663300">(</font></b>hbuffer<b><font color="#663300">);</font></b><i><font color="#999999">

		// Because we called ::GetDC make sure we release the handle
		// back to the system or we'll have a memory leak.
</font></i><b><font color="#663300">		::</font></b>ReleaseDC<b><font color="#663300">(</font></b>hwnd<b><font color="#663300">,</font></b>hdc<b><font color="#663300">);
	}
}</font></b></pre>
</body></html>